#声明函数
def add():
    a = 3
    b = 5
    s = a + b
    print(s)
    return a


c = add()
print(c)


def shi():
    print('云想衣裳花想容,春风拂槛露华浓意')


shi()



#函数的参数传递
#第一组
def add(a, b): #ab为参数
    print(a + b)

#第二组
add(1, 3)

a = 1
b = 3
add(a, b)#实参为变量

#第三组
add(2*3,4*5)#实参为表达式


c = 3
add(8,c*3)#实参为常量，变量和表达式组合



def score(a,b,c):
    print('李华成绩为：', a)
    print('李明成绩为：', b)
    print('李天成绩为：', c)

score(65,85,89)
score(b=65,a=85,c=89)

def reg(name, age, sex="女"):
    print('姓名:{} 年龄 {} 姓名：{}'.format(name, age, sex))
reg('张三',20)
reg('李四',21,'男')



def favf(*fru):
    print('我喜欢的水果有：')
    for i in fru:
        print(i)


favf('苹果')
favf('苹果', '梨')
favf('菠萝', '芒果', '西瓜', '桃子', '葡萄')


# 如果声明函数的时候有其他形参，通常会把可变长参数放在最后
def show(a, b, *l):
    print(a)
    print(b)
    print(l)


show(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)





def re(a, b, c, d):
    return a + b, c * d, a - c


ss = re(1, 2, 3, 4)
print(ss)

#局部变量
def fun():
    a = 20
    return a


#全局变量
a = 10
print(a)
print(fun())


# 利用递归计算100的阶乘 100！
def f(n):
    if n <= 1:
        return 1
    else:
        return n * f(n - 1)


num = int(input('请输入一个正整数:'))
s = f(num)
print(num, '的阶乘是：', s)


# 利用递归计算1~100相加之和
def sum(n):
    if n == 1:
        return 1
    else:
        return n + sum(n - 1)


print('1~100相加德和为', sum(100))


# 计算斐波那契数列F（0），F（1）=1，F(n)=F(n-1)+F（n-2）（你）
def fibo(n):
    if n <= 2:
        return 1
    else:
        return fibo(n - 1) + fibo(n - 2)


print('斐波那契数列的第{}项为{}'.format(7, fibo(7)))

#匿名函数
sum = lambda a, b, c: a+b+c
print(sum(1,2,3))


#编写lambda函数
fun = lambda m: m**2
print(fun(5))
